当前位置:flash课件吧→免费FLASH教程之三(含实例教程)新页面 新改版 新气象

题 目:FLASH变量和数据类型

变量是什么 大概说来就是存放信息的容器(更确切的说是指向内存空间中某个存贮位置的指针, 但是能够理解就行了, 何必去记这么抽象的定义). 只要能够理解他能够存放信息并能够通过各种途径改变其中的信息就能够了, 我又不是大学里面的老师, 整天就知道叫学生死记硬背定义, 实际的东西一点都没有, "一切为了考试".

  更有一个概念: 什么叫初始化变量 就是在定义时给他一个有效值以说明他的内容和数据类型. 就像下面的例子, 定义了一个字符串(String)变量:

  MyString = "我不懂什么是初始化变量";

  就这么简单, 但是也有要注意的问题:

  变量名必须为有效的标识符(例如不能以数字和不允许使用的字符开头).

  变量名不能和 Actions cript 关键字和常量相似或相同.

  变量名在他的作用域(Scope)中必须是唯一的(在下面我们会提到什么是作用域).

  变量作用域

  也就是变量在什么范围内是能够访问的. 就似乎在 C&C: Renegade 中的任务相同, 没有 Security Level 3 的 ID Card 就进不了安全级别为 3 的区域的.

  作用域一般说来有三种: 时间线(Timeline), 局部(Local), 全局(Global).

  --------------------------------------------------------------------------------

  对于时间线范围的变量, 就像上面的例子相同用 = 赋值并声明, 当然您也能够用 set 动作(Flash 4, 不推荐使用的方法, 除非您觉得代码不够长):

  set( MyString, "我不懂什么是初始化变量" );

  时间线范围变量声明后, 在声明他的整个层级(Level)的时间线内他是可访问的.

  --------------------------------------------------------------------------------

  什么是局部变量 我也常常问自己. 局部变量就是在声明他的语句块内(例如一个函数体)是可访问的变量, 通常是为避免冲突和节省内存占用而使用.

  声明他能够使用 var 关键字:

  function LocalVar(){

  var MyLocalString = "这是个局部字符串变量";

  trace( "Inside: " MyLocalString );

  }

  LocalVar();

  trace( "Outside: " MyLocalString );

  上面的 MyLocalString 字符串变量在函数尾就会被自动清除出内存. 所以在外面的 trace 语句返回结果为空("Outside:"), 而函数体内的 trace 返回:"Inside: 这是个局部字符串变量".

  假如您删除了 var 关键字, 那么 MyLocalString 就成时间线范围的变量了. 运行后显示 Inside 和 Outside 都为 "这是个局部字符串变量". 在后面的函数一章我们还会提到局部变量的内容.

  也许您注意到了函数中有一个 trace 动作. 他能够在测试模式(Testing Movie, CTRL ENTER 组合键)下把指定变量的值发送到输出窗口(Output Window), 以便在运行时检查处理变量的代码是否正常. 这是个很方便的检查方法, 在测试代码时经常使用.

  在代码中假如碰到有不清楚的函数和关键字, 能够通过 Action 面板的参考按钮(Reference)打开参考面板显示光标所在位置关键字或内建函数连同对象的周详信息, 也能够通过组合键 SHIFT F1 打开他. 下面是参考面板:

  全局变量, 顾名思义就是在整个 Movie 中都能够访问的变量. 他的声明比较特别:

  _global.MyGlobalString = "这是个全局字符串变量";

  声明使用了一个 _global 标识符和点语法(Dot Syntax, 将在后面的章节讨论). _global 标识符是在 Flash 6 中新增加的, 用于创建全局变量, 函数, 对象和类(Class, 不清楚类是什么的话能够看看 C 的书).

  总的来说 _global 是个和最底层 _level0 并列的对象. 任何的全局变量, 函数, 对象其实就相当于是他的属性, 方法, 子对象. 关于他的具体内容能够查阅帮助文档, 一般我们只要懂得用就行了.

  全局变量会被同名的时间线变量和局部变量屏蔽(Obscured), 这时我们就要通过别的方式来访问他了. 看看下面的例子:

  //定义全局变量

  _global.x = "Global";

  //一个简单的函数

  function show() {

  trace("没有局部变量时函数内: " x);

  var x = "Local";

  trace("有局部变量时函数内: " x);

  trace("有局部变量时调用时间线变量: " this.x);

  }

  //测试

  trace("------没有时间线范围变量时------");

  show();

  trace("直接调用: " x);

  //配置时间线变量

  x = "Timeline";

  //测试

  trace("-------有时间线范围变量时-------");

  show();

  trace("直接调用: " x);

  trace("有时间线范围变量时调用全局变量: " _global.x);

  由上例的结果能够看出, 在当前时间线范围内有和全局变量同名的变量时, 直接通过变量名只能访问时间线范围内的同名变量, 这时应该用 _global.变量名 来调用全局变量. 同样局部变量也会屏蔽时间线变量(这时能够用 this.变量名 来调用时间线变量)和全局变量(这时能够用 _global.变量名 来调用全局变量).

  在代码中使用变量

  使用变量很简单, 有点编程基础的读者都能够办到. 下面用一个例子来说明在 Actions cript 中变量的使用:

  function vars(x){

  if(x<5){ //假如 x 小于 1

  x = x 1; //x 加 1

  } else {

  x = 10; //否则赋值 10

  }

  trace("x=" x);

  return x;

  }

  vars(2);

  vars(6);

  trace("x=" x); //测试 x 是否为局部变量

  函数声明中的参数无需加 var 声明也自动作为局部变量(例如上面例子中的 x). 通过上面例子的最后一句就能够看出来(返回值为空).

我们能够看到, 上面定义的函数中对局部变量 x (在函数参数中声明)进行了 4 种操作:

  赋值: 就是改变变量所存贮的内容.

  运算: 使用运算符运算并返回结果. 上例中的 x = x 1 可视为一个运算操作(x 1)和一个赋值操作(x = ...)的复合语句. 对于逻辑运算(上面 if 语句的条件), 返回的为逻辑值 true 或 false(就像 x<5 在 x 为 4 时会返回 true).

  函数及命令调用: 就如上面 trace("x=" x); 中的相同, x 是被作为参数传递给函数的, 他代表的是他所存贮的实际内容(在 return x; 中也相同).

  在 Actions cript 中变量的使用具备很大的灵活性, 下面我们将会针对不同的数据类型进行讲解.

  常见数据类型---字符串 | String

  一个字符串就是一系列的字符, 例如 "This" 就是个字符串.

  定义一个字符串变量很简单, 只要在初始化时将一个字符串数据赋给他就行了:

  chapter = "第 2 章";

  section = "第 2 节";

  section_name = "常见数据类型";

  full_name = section " " add section_name 999; //连接字符串

  if(typeof(full_name) ne "string"){

  full_name = "类型错误!";

  }

  trace("full_name=" full_name);

  上面的第 4 行的 full_name 的值是前面两个变量(section 和 section_name)和一个常量(999)的运算结果(使用了 和 add 运算符, 他们的功能是相同的). 请注意, 这行代码最后面的数值常量 999 不是同一类型的数据, 假如在 Pascal 这种数据类型检查极其严格的语言中这行代码是错误的. 但是 Actions cript 能够自动将他转换为字符串格式, 而无需专门的函数(当然, 最安全的方法是使用 Number 对象的 toString() 函数或是 String() 函数). 由此可见, Actions cript 是一种弱类型检查的语言(即不严格限制各种数据类型间的运算和传递), 这和 VB 倒是有点相似, 只但是更过分一点.

  在后面我用了一个 if 语句来测试后面加上 999 的代码是否运行正常(即检查表达式返回的值是否为字符串, 尽管在实际中并没有这个必要). 注意我用的是字符串类型专用的逻辑运算符 ne, 当然这只是为了表现字符串数据类型的特别性, 实际应用中用 != 也就能够了. 对于 typeof 操作符, 我们会在这一章的末尾周详讲解.<!-- / message --><!-- sig -->

  
--------------------------------------------------------------------------------

 

  <!-- / icon and title --><!-- message -->

  
--------------------------------------------------------------------------------

  在实际应用中, 有一些特别的字符不能直接输入在字符串中, 例如不能在字符串中直接输入引号(会破坏字符串的完整性). 这时我们就需要用到转义字符了(Escaping). 要使用转义字符, 首先要输入一个反斜杠(\), 然后输入相应的代码. 周详的代码列表如下:

  转义字符 代表字符

  \b 退格字符 (ASCII 8)

  \f 换页符 (ASCII 12)

  \n 换行符 (ASCII 10)

  \r 回车符 (ASCII 13)

  \t 制表符 (ASCII 9)

  \" 双引号字符

  \'' 单引号字符

  \\ 反斜杠字符

  \000 - \377 八进制表示的字符

  \x00 - \xFF 十六进制表示的字符

  \u0000 - \uFFFF 十六进制表示的 16 位 Unicode 字符

  例如:

  trace("He said:\"I don\''t care about you.\"\nAnd she smiled:\"Really\"");

  您能够根据上面的对照列表读出上面代码的字符串内的实际内容. 运行后的输出为:

  He said:"I don''t care about you."

  And she smiled:"Really"

  能够看到, 转义字符都被转换为相应的实际字符了. 这就是转义字符的作用, 学过 C 的读者应该很熟悉了.

  数值 | Number

  Actions cript 中的数值型数据为双精度浮点数(不懂是什么意思也没关系, 反正知道是数值就行了, 那只但是是个范围限制).

  对数值型数据能够进行任何相应操作. 如下例:

  a = 1;

  b = 2;

  sum = a b; //求 a, b 之和

  if(sum>0){ //假如结果大于 0

  square_root = Math.sqrt(sum); //使用 Math 对象的平方根函数求 sum 的平方根

  }

  trace("sum=" sum);

  trace("square_root=" square_root);

  完.

  逻辑变量 | Boolean

  逻辑变量又被称为布尔变量(由其英文名称而来). 他只有两个值: true 和 false. 在必要的情况下, Actions cript 会自动将他的值转换为 1 和 0, 您也能够用 1 和 0 给他赋值(这是可能是为了和 Windows API 函数调用兼容而产生的).

  a = 10;

  b1 = 1;

  b2 = false;

  if(b1 == true){

  a = a b1;

  } else {

  b2 = !b2;

  }

  trace("a=" a);

  trace("b1=" b1);

  trace("b2=" b2);

  上面代码混合了数值型和逻辑型变量的运算. a = a b1 将逻辑值 b1(true 即 1)加到 a 上, b2 = !b2 则是对 b2 取反(即由 false 变为 true 或是由 true 变为 false, 因为逻辑值只有两种情况: 真或假). 您能够试着修改一下 b1 的值来看看不同的效果.

  对象 | Object

  对象是 Actions cript 中的一个重要数据类型. 说得更清楚一些, 他就是现在大多数编程语言中的类(Class). 其实在 Flash 中使用的 MovieClip 其实也属于一种预定义的类, 只但是他有些特别而已.

  关于对象我们会在后面章节周详介绍

  影片 | Movieclip

  影片是 Flash 中唯一用来引用图像元素的数据类型. 您能够通过 MovieClip 对象的各种属性(Property)和方法(Method)来操作他的实例(Instance).

关于影片我们也会在后面周详讲解

  空 | Null

  空 我是说"空", 也就是什么都没有. 这种数据类型就是这个意思, 而且他只有一个值: null. 那么他有什么用呢

  用来表示一个变量尚未赋值

  用来表示一个变量已不包含数据

  用来表示一个函数没有返回值

  用来表示一个函数的某个参数被省略了

  不要认为他毫无意义, 在涉及到具体的程式问题时他是很有用的.

  定义 | Undefined

  未定义类型同 Null 差不多, 也只有一个值: undefined.

  他被用来表示一个变量尚未赋值.

  typeof 操作符

  在实际应用中我们经常碰到需要判断具体变量和对象的数据类型的情况. Flash 提供了一个很好用的 typeof 来解决这个问题. 特别是对于自定义函数的设计, 确定参数的类型是很重要的步骤.

  参数类型 返回值(字符串)

  String string

  MovieClip movieclip

  Button object

  TextField object

  Number number

  Boolean boolean

  Object object

  Function function

  Undefined undefined

  Null null

  typeof 操作符的优先级很高, 能够在逻辑运算或是算术运算符之前被运算. 下面是他具体应用的例子:

  //常数的类型

  trace("数值常数 36 的类型: " typeof 26);

  trace("字符串常数 what 的类型: " typeof "what");

  //一般 typeof 操作符能够像 , -, add 等操作符相同使用

  //但为了避免出错还是建议您使用括号, 如下例

  trace("逻辑常数 true 的类型: " typeof(true));

  //对象的类型

  trace("对象 Object() 的类型: " typeof (Object()));

  trace("new String() 的类型: " typeof new String()); //注意 new 操作符优先级比 typeof 高

  //函数的方法的类型取决于其返回值

  trace("Math.sqrt() 方法的类型: " typeof Math.sqrt());

  trace("Math.toString() 方法的类型: " typeof Math.toString());

  //null 空类型

  trace("null 的类型: " typeof null);

  //在这里我用了多级 typeof 来看看 typeof 返回的值的类型

  trace("typeof 返回值的类型: " typeof (typeof null));

  您还能够自己试着改变一下代码, 看看其他东西的 typeof 是什么.

 

 

 

 

 

期刊论文服务

合作期刊
学报期刊
 
获奖证书办理
本站已改版成新站 课件115学培吧http://www.kj115.com
免费FLASH教程之三(含实例教程)内容导航
为Flash建搜索内容索引 Flash广告播放器研发 Flash引领互动动画潮流 Flash趣味鼠标特效大作战
Flash MX 2004滚动文本框的两种做法 给Flash文件添加历史记录 Flash中的常见术语(详解) 用笛卡尔公式画出的一颗心状图
播放器拖动进度条制作 水滴效果动画,Flash制作中的AS问题 中秋寄相思 自制Flash贺卡 用SWiSHmax轻松制作精彩Flash片头
用autocad制作一个量角器_autocad教程 Flash百叶窗制作教程 Flash制作实用别致的导航菜单 Flash实用技巧之音乐时间显示篇
Flash中的电影艺术之镜头技巧教程
Flash AS游戏教程:人物及控制 PS+FLASH制作马赛克效果 如何在论坛中,链接自已的FLASH动画呢!
FLASH中的抛运动中的竖直上抛运动 鼠标感应花儿转动效果 FLASH效果篇:闪光效果 自己动手制作手机Flash主题动画
晨雾蒙蒙动画效果,Flash制作方法 Flash制作简单MP3播放器 Flash制作滚动广告图片效果 Flash MX动画制作实例教程-文字处理-设置段落属性
电闪雷鸣、小雨纷飞的效果,Flash制作方法 Flash实现用鼠标调整窗口的大小 AS3学习源码--打气球 关于主动画中load动画和动态文本的共同运用问题
关于倒计时程序的准确性解决方法之一 Flash加载外部文件的方法与技巧集合 Tween类:图片缓动浏览效果 FLASH中加载外部音乐代码&部分难找AS教程
Flash与Java Servlet结合实现网上对战 用AS3实再FLASH游戏的上下左右移动 FLASH中加载外部音乐代码 Flash动态文本框中加载HTML格式文本
Flash制作环绕的立体图片效果动画 FLASH CS3中的FLA形式组件制作教程 酷!Flash聊天室的实现 更多相关内容总目录(200个)》》》
国家信息产业部备案专号:鄂ICP08005724返回顶部
本站推荐最佳分辨率:1024X768在线咨询台
声明:我站除课件制作动画制作培训以外,所有内容均属于免费资源。本站部分资源来自于网络,由本站收集整理,如有侵权请联系本站管理(QQ444860709 手机13339817386),我站会在三个工作日内处理。